import axios from 'axios'
// eslint-disable-next-line no-unused-vars
import { getStorage, setStorage } from '@/libs/storage'

/**
 * 设置全局 axios 默认值
 */
// axios.defaults.baseURL = process.env.VUE_APP_BASEURL
axios.defaults.timeout = 15 * 1000 // 超时设定
const instance = axios.create({
  baseURL: process.env.VUE_APP_BASEURL,
  timeout: 15000
})
// /**
//  * 请求拦截器（过滤请求）
//  */
// instance.interceptors.     .use(
//   config => {
//     // 自定义请求头
//     config.headers.token = getStorage('h5Tk') // token设置
//     // config.headers.timestamp = String(new Date().getTime())
//     // config.headers.deviceCode = String(new Date().getTime()) // 用户设备号
//     // config.headers.deviceType = 0 // 设备系统类型 0.安卓 1.iOS 2.微信小程序
//     return config
//   },
//   error => {
//     return Promise.reject(error)
//   }
// )

// /**
//  * 响应拦截器（过滤响应）
//  */
// instance.interceptors.response.use(
//   response => {
//     // if (response.data.code === 1) { // 服务端定义的响应code码为1时请求成功
//     //   return Promise.resolve(response.data) // Promise.resolve 正常响应
//     // } else if (response.data.code === -999) { // 服务端定义的响应code码为-999时为未登录
//     //   // store.dispatch('setUserInfo', {})
//     //   setStorage('h5Tk', '')
//     //   toast('登录已过期')
//     //   // router.push('/login')
//     //   return Promise.reject(response.data) // Promise.reject 抛出错误和异常
//     // } else {
//     //   return Promise.reject(response.data)
//     // }
//     return Promise.reject(response.data)
//   },
//   error => {
//     return Promise.reject(error.response)
//   }
// )

/**
 * 封装GET请求
 * @param {String} url          请求url地址
 * @param {Object} params       请求参数
 */
export const getRequest = (url, params, headers = {}) => {
  return new Promise((resolve, reject) => {
    axios({
      method: 'get',
      url,
      params,
      headers: headers
    }).then(res => {
      resolve(res.data)
    }).catch(err => {
      reject(err.data)
    })
  })
}

/**
 * 封装POST请求
 * @param {String} url          请求url地址
 * @param {Object} params       请求参数
 * @param {Boolean} isJSONType  是否json格式
 */
export const postRequest = (url, params, headers = {}) => {
  return new Promise((resolve, reject) => {
    axios({
      method: 'post',
      url,
      data: params,
      headers
    }).then(res => {
      resolve(res.data)
    }).catch(err => {
      reject(err.data)
    })
  })
}

/**
 * 封装PUT请求
 * @param {String} url          请求url地址
 * @param {Object} params       请求参数
 * @param {Object} headers      请求头
 * @param {Boolean} isJSONType  是否json格式
 */
export const putRequest = (url, params, headers = {}) => {
  return new Promise((resolve, reject) => {
    axios({
      method: 'put',
      url,
      data: params,
      headers
    }).then(res => {
      resolve(res.data)
    }).catch(err => {
      reject(err.data)
    })
  })
}

/**
 * 封装DELETE请求
 * @param {String} url          请求url地址
 * @param {Object} params       请求参数
 */
export const deleteRequest = (url, params, headers) => {
  return new Promise((resolve, reject) => {
    axios({
      method: 'delete',
      url,
      params,
      headers
    }).then(res => {
      resolve(res.data)
    }).catch(err => {
      reject(err.data)
    })
  })
}

/**
 * 封装文件上传请求
 * @param {String} url          请求url地址
 * @param {Object} params       请求参数
 */
export const uploadFileRequest = (url, params) => {
  return new Promise((resolve, reject) => {
    axios({
      method: 'post',
      url,
      params
    }).then(res => {
      resolve(res.data)
    }).catch(err => {
      reject(err.data)
    })
  })
}
export default instance
